package io.github.fb513.transport.util;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.json.JsonMapper;
import io.github.fb513.common.util.JsonParser;

import java.util.List;

public class JsonUtils {

    private static final JsonParser jsonParser;

    static {
        jsonParser = new JsonParser(new JsonMapper());
    }


    public static <T> T parseJsonToObj(String jsonStr, Class<T> clazz) {
        return jsonParser.parseJsonToObj(jsonStr, clazz);
    }

    public static <T> T parseJsonToObj(String jsonStr, TypeReference<T> type) {
        return jsonParser.parseJsonToObj(jsonStr, type);
    }

    public static <T> List<T> parseJsonToList(String jsonStr, Class<T> clazz) {
        return jsonParser.parseJsonToList(jsonStr, clazz);
    }

    public static JsonNode parseJsonToJsonNode(String jsonStr) {
        return jsonParser.parseJsonToJsonNode(jsonStr);
    }

    public static String formatObjToJson(Object obj) {
        return jsonParser.formatObjToJson(obj);
    }

    public static <T> T convertToPojo(JsonNode jsonNode, Class<T> clazz) {
        return jsonParser.convertToPojo(jsonNode, clazz);
    }
}
